home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Loadstar 14
/
014.d81
/
sort collection
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-08-26
|
2KB
|
92 lines
0 ifx=0thenx=1: load"shell-metzner.o",8,1
1 nn=100:dima$(nn+1)
3 :
5 gosub10000
10 goto20000
15 :
19 rem shell
20 gosub500 : rem __ set array
25 gosub1000 : rem __ set time = 00
30 g=int(nn/2)
40 n=0:fori=1tonn-g
50 ifa$(i)>a$(i+g)thent$=a$(i):a$(i)=a$(i+g):a$(i+g)=t$:n=1:poke53280,rnd(1)*15
60 nexti:ifn=1then40
70 g=int(g/2):ifg>=1then40
80 gosub2000 : rem __ print time
87 return
88 :
90 rem modified insertion
92 gosub500 : rem __ set array
95 gosub1000 : rem __ set time= 00
100 forx=0tonn-1
110 fory=x+1tonn
120 ifa$(x)>a$(y)thent$=a$(x):a$(x)=a$(y):a$(y)=t$:poke53280,rnd(1)*15
130 nexty:nextx
140 gosub2000 : rem __ print time
150 return
155 :
200 rem shell/metzner sort
204 gosub 500 : rem __ set array
205 gosub 1000 : rem __ set time = 00
210 s=nn
220 z=0
230 s=int((s+1)/2)
240 fori=1tonn-s
250 ifa$(i)<=a$(i+s)then300
260 t$=a$(i)
270 a$(i)=a$(i+s)
280 a$(i+s)=t$
290 z=1:poke53280,rnd(1)*15
300 nexti
320 if(z=1)or(s>1)then220
330 gosub2000 : rem __ print time
340 return
350 :
360 :
400 rem m/l shell metzner
410 gosub500 : rem __ set array
420 gosub1000 : rem __ set time=00
430 sys49152a$(0): rem ___ sort
440 gosub2000 : rem __ print time
450 return
460 :
470 :
500 print"[147]before :":print:forx=0tonn+1:a$(x)=chr$(65+rnd(1)*26):printa$(x);:
505 next:print:print:return
510 :
1000 print"sorting...":ti$="000000"
1010 return
1020 :
2000 print"after :":print:forx=1tonn:printa$(x);:next:print:print
2001 t=int(ti/60)
2005 print"it took"t"seconds";:ift<2thenprint"[157] [157]";:
2006 print" to sort"nn"elements."
2010 print" <press a key to continue>"
2020 poke198,0:wait198,1:poke198,0
2030 return
10000 print"[147]"spc(11)"sort comparison":poke53281,0:poke53280,5
10002 printspc(17)"by"
10004 printspc(12)"alan gardner"
10006 print"loadstar is not public domain, but feel"
10008 print"feel free to use any of the sort "
10010 print"routines found in this program in your"
10012 print"own programs."
10020 print" press a key to continue"
10030 poke198,0:wait198,1:poke198,0
10040 return
20000 rem menu/selection
20010 print"[147] *** menu ***"
20020 print" 1. modified insertion"
20030 print" 2. shell sort"
20040 print" 3. shell-metzner sort"
20050 print" 4. machine-language shell-metzner"
20052 print" 5. exit program"
20060 print"which ?";
20070 poke198,0:wait198,1:getz$: z=val(z$)
20080 ifz$=""orval(z$)=0orz<0orz>5 then20070
20090 onzgosub90,19,200,400,63000
20100 goto20000
63000 rem connect back to l.s.
63010 print"[147]load"chr$(34)"payload"chr$(34)",8":print"run"
63020 poke631,13:poke632,13:poke198,2: end